docs: one fact spelled once, and the marker the reader can see - #454
Merged
Conversation
Two sed one-liners in sh fences restated the replace-all their refusal block's recipe already states, and sh fences are skipped by the scanner, so one copy was checked and one was not. Measured before choosing, because the brief assumed they might not run: they do. Both reproduce their refusals, and "degrees": 12 occurs eight times in the nod motion spec, so the one-liner and the recipe are the same replace-all rather than two edits that agree. The two fences are not the same object. The portrait pitch fence is a pure duplicate and is deleted whole. The nod fence brackets the fold angle from both sides, and only the 34 degree half is the recipe spelled twice: a recipe whose edit leaves the build green is refused by GT05, so the grammar structurally cannot carry the 33 degree side and that line is the only copy of it. Generating the sed line from the recipe was rejected on a closed question rather than on taste. #442 already refused ending a recipe in a runnable command because the command as written does not run, and a rendering that looks copy-pasteable and is not would reopen it. GT06 keeps the deletion: every fence the transcript scan skips is read against the recipes the gallery carries, and a line spelling both halves of one edit faults. Ten real lines name a recipe's from and patch it elsewhere and are left alone, which is the half the rule must not touch. The dated-record marker was an HTML comment under eight lines of HTML comment explaining it. Both are gone and one visible sentence stands in their place, assembled from one constant so the sentence a reader sees is the one CUR01 parses. Exactly one form parses: CUR09 proves the retired comment declares nothing, and that the sentence wrapped back into a comment declares nothing either. CUR01 gained a floor it never had, so a marker form that stops matching now faults instead of quietly taking the page back into the scan. CUR01's population did not move, figure for figure. Closes #443, closes #444. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #443, closes #444.
bun run typecheckclean,bun run lintclean,bun run selftest564 PASS / 0 FAIL / 0 SKIP / 0 HOLE, exit 0 (562 onmain). The+2is exactlyCUR09andGT06.🔒 No summary figure was edited, which is #452's promise being kept rather than asserted:
TY10reports the identical548 literal runs, 48 clause openings, 46 value-filled, 40 n('…') callsbefore and after.#443 — measured before choosing, and the measurement changed the answer
The card assumed the
sedcopies might be dead weight. They are not: all three run and all three reproduce their refusals, and"degrees": 12occurs eight times ingallery/nod/motion.json, so the one-liner and the recipe are the same replace-all rather than two edits that happen to agree.So the argument had to be settled on other grounds — and there, the two fences turn out not to be the same object, which the card's framing does not distinguish and the tree does:
pitchfence is a pure duplicate. Onesed, onebuild, and the recipe two lines below states exactly that edit and that verb. Deleted whole. The prose above pointed into the fence (`/tmp/pp.json` above), so the two paragraphs around it were merged into one that names no path.GT05faults a recipe whose edit leaves the build green — so the grammar structurally cannot carry it, and that line is the only copy of that fact. The 34° line is deleted, the 33° line kept, and the lead-in reworded from "Two builds:" to "The green side of the bracket:".Rejected, on a closed question rather than on taste
Generating the
sedline from the recipe. A recipe carriesfrom,to, example, spec and verb; thesedline also carries a redirect target, an--outdirectory and a# green/# A39 firescomment, none of which the recipe has or could derive — a generator would have to mint them, and a minted convention is the next hand-kept thing. Decisively, #442 already refused ending a recipe in a runnable command because "that command as written does not run … it would look copy-pasteable and not be." Re-adding a copy-pasteable rendering reopens a question this repository closed.A checker over the surviving
shfence — the forbidden third state, which gates the copy instead of removing it.The four refusal blocks reproduce exactly as before, proved rather than asserted
GT024 blocks / 29 wrapped lines before and after;GT01found 25 / byTag 14 / byHead 6 / byRecipe 4 / verified 18 / declared 7, identical;GT0392 planted edits, 0 misses, identical;GT05notDragged 14, 7 grammar refusals, 4 elision probes, identical. Only line numbers moved.GT06, and the population that makes it a gateGT06_THE_EDIT_A_REFUSAL_RECIPE_STATES_IS_SPELLED_ONCEreads every fenced block the transcript scan skips — the ones with an info string — against the recipes the gallery carries, and faults a line spelling both halves of one edit.Its negative population is real rather than synthetic: 10 lines name a recipe's
fromand patch it to something else (the surviving 33° line, the amplitude and wavelength sweeps) and are all left alone. Its red-first probe is generated from the grammar, so it cannot drift away from it.gallery/README.mdis deliberately outside that scan and the reason was measured, not assumed. The index shows one filled-in recipe inside a```markdownfence, so it carries both halves of an edit on one line — and it is not a copy, becauseGT05already requires that example to parse and to be a recipe some README really carries. Widening the scan would have faulted the one copy in the tree that is already derived. The reason is written into the case.#444 — an HTML comment explaining an HTML comment
docs/SPEC_COVERAGE.mdopened with eight lines of comment above the marker comment. Both are gone; one visible sentence stands there:CUR09proves the retired comment declares nothing, and that the sentence wrapped back into a comment declares nothing either.2026-08-22in its own prose; interpolating it would be a second copy of exactly the kind this scan refuses.CUR01still requires an ISO date in the header and the marker points at it.The hand-written decoder #444 said to look for was there — the eight-line comment existed only because the marker was unreadable. Deleted.
🔒
CUR01's population did not move, figure for figure: 22 docs read (14 shipped, 8 one hop off README), 1 dated record, and every "sites read" limb unchanged. No floor was lowered — two clauses were added, and the second is a floor the marker never had: before this, a marker form that stopped matching would have taken the page silently back into the scan.Mutants — planted in the real file, run, restored, checksummed
#444 red-first ①, the retired comment form back where the sentence is — 561 PASS / 3 FAIL / exit 1:
⭐
CUR02is the proof the escape hatch was doing work: with the marker gone, the page's own stale figure is refused against the registry.#444 red-first ②, a near miss — the message names both strings and says why a near miss is worse than a file that never asked:
#443 red-first, the deleted
sedline put back verbatim — 563 PASS / 1 FAIL / exit 1, and the count is the point:GT01–GT05stay green, so the refusal block still reproduces with the copy beside it and only the new gate sees it.Negative controls: a command naming only a recipe's
from; one naming neither half; the ten real gallery lines; the marker sentence itself; a marked page with an ISO date. None caught.🚨 A check that printed the pass sentence while failing
CUR09's first version went red with the marker reverted and its detail read "…and all 0 marked document(s) carry the sentence verbatim" — a FAIL whose message says everything is fine. The floor was a bare conjunct in the verdict rather than an entry inprobes. Fixed here and re-run, and recorded because it is the doctrine's first bullet exactly: the message is the product.Reported, not fixed
CUR01instead of an invented number.A39twice — same triangles and areas, two keys — and the README quotes only the first.GT02permits this, so it is not a gate defect; it is a block showing half of what a reader would see. Left alone, because changing it is a content edit and two refusal recipes are also spelled as sed one-liners in sh fences, and that copy is ungated #443 forbids one.The next drift this change makes
Asked before finishing, and three hand-kept things came back out: a comment stating "exactly one document needs it" (a count the run already prints) became "one document takes it today" with the cap gap named beside it;
GT06's comment stopped naming 33° and states what is structural instead;CUR09's detail interpolates the header-line count rather than spelling it.What could not be removed: the marker sits three paragraphs above the page's own 🔼 "this note is dated" blockquote, so a reader meets the idea twice. They are not the same claim, and making the blockquote itself the marker fails on mechanics — it is
>-prefixed and wrapped over three source lines, and anything looser is a second accepted spelling.